home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / program / mcvbehtp.zip / VBEHTP40.BAS < prev    next >
BASIC Source File  |  1996-05-16  |  17KB  |  486 lines

  1. Attribute VB_Name = "vbErrorHandler_bas"
  2. Option Explicit
  3.  
  4. Global Const VB_LNG_FRENCH = 1
  5. Global Const VB_LNG_DUTCH = 2
  6. Global Const VB_LNG_GERMAN = 3
  7. Global Const VB_LNG_ENGLISH = 4
  8. Global Const VB_LNG_ITALIAN = 5
  9. Global Const VB_LNG_SPANISH = 6
  10. Global Const VB_LNG_CATALAN = 7
  11. Global Const VB_LNG_POLISH = 8
  12.  
  13. Const MB_MESSAGE_LEFT = 0
  14.  
  15. #If Win16 Then
  16.  
  17. Declare Sub cPushID Lib "mcvb4016.dll" (IDArray As Integer, ByVal nID As Integer)
  18. Declare Sub cPopID Lib "mcvb4016.dll" (IDArray As Integer, ByVal nID As Integer)
  19. Declare Sub cPopLastID Lib "mcvb4016.dll" (IDArray As Integer)
  20. Declare Function cGetID Lib "mcvb4016.dll" (IDArray As Integer, ByVal nPosition As Integer) As Integer
  21. Declare Sub cClearID Lib "mcvb4016.dll" (IDArray As Integer)
  22. Declare Sub cChangeChars Lib "mcvb4016.dll" (Txt As String, CharSet As String, NewCharSet As String)
  23. Declare Function cGetIni Lib "mcvb4016.dll" (ByVal AppName As String, ByVal szItem As String, ByVal szDefault As String, ByVal InitFile As String) As String
  24. Declare Function cInsertBlocks Lib "mcvb4016.dll" (Txt As String, Insert As String) As String
  25. Declare Function cLngMsgBox Lib "mcvb4016.dll" (ByVal nLanguage As Integer, ByVal Message As String, ByVal Button As Long, ByVal Title As String) As Integer
  26. Declare Function cKillFileAll Lib "mcvb4016.dll" (ByVal lpFilename As String) As Integer
  27. Declare Function cTimerClose Lib "mcvb4016.dll" (ByVal TimerHandle As Integer) As Integer
  28. Declare Function cTimerOpen Lib "mcvb4016.dll" () As Integer
  29. Declare Function cTimerRead Lib "mcvb4016.dll" (ByVal TimerHandle As Integer) As Long
  30. Declare Function cTimerStart Lib "mcvb4016.dll" (ByVal TimerHandle As Integer) As Integer
  31.  
  32. #Else
  33.  
  34. Declare Sub cPushID Lib "mcvb4032.dll" (IDArray() As Integer, ByVal nID As Integer)
  35. Declare Sub cPopID Lib "mcvb4032.dll" (IDArray() As Integer, ByVal nID As Integer)
  36. Declare Sub cPopLastID Lib "mcvb4032.dll" (IDArray() As Integer)
  37. Declare Function cGetID Lib "mcvb4032.dll" (IDArray() As Integer, ByVal nPosition As Integer) As Integer
  38. Declare Sub cClearID Lib "mcvb4032.dll" (IDArray() As Integer)
  39. Declare Sub cChangeChars Lib "mcvb4032.dll" (Txt As String, CharSet As String, NewCharSet As String)
  40. Declare Function cGetIni Lib "mcvb4032.dll" (ByVal AppName As String, ByVal szItem As String, ByVal szDefault As String, ByVal InitFile As String) As String
  41. Declare Function cInsertBlocks Lib "mcvb4032.dll" (Txt As String, Insert As String) As String
  42. Declare Function cLngMsgBox Lib "mcvb4032.dll" (ByVal nLanguage As Integer, ByVal Message As String, ByVal Button As Long, ByVal Title As String) As Integer
  43. Declare Function cKillFileAll Lib "mcvb4032.dll" (ByVal lpFilename As String) As Integer
  44. Declare Function cTimerClose Lib "mcvb4032.dll" (ByVal TimerHandle As Integer) As Integer
  45. Declare Function cTimerOpen Lib "mcvb4032.dll" () As Integer
  46. Declare Function cTimerRead Lib "mcvb4032.dll" (ByVal TimerHandle As Integer) As Long
  47. Declare Function cTimerStart Lib "mcvb4032.dll" (ByVal TimerHandle As Integer) As Integer
  48.  
  49. #End If
  50.  
  51. 'Don't change any variables and their value below
  52.  
  53. Const ID_ITEMS = 16
  54.  
  55. Type tagERRORHANDLERtype
  56.    ModuleName                       As String * 256
  57.    RoutineHandle                    As String * 4
  58.    RoutineName                      As String * 76
  59.    CrLf                             As String * 2
  60. End Type
  61.  
  62. Type tagTRACERtype
  63.    StartStop                        As String * 1
  64.    RoutineHandle                    As Integer
  65. End Type
  66.  
  67. Type tagPROFILERtype
  68.    ModuleName                       As String * 256
  69.    RoutineHandle                    As String * 4
  70.    RoutineName                      As String * 76
  71.    TimeCounter                      As Long
  72.    TotalCall                        As Long
  73.    TotalTime                        As Long
  74.    MinimumTime                      As Long
  75.    MaximumTime                      As Long
  76.    Dummy                            As String * 10
  77.    CrLf                             As String * 2
  78. End Type
  79.  
  80. Dim TotalRoutines                   As Integer
  81. Dim ActualTrace                     As Long
  82. Dim OldStartRoutine                 As Integer
  83. Dim OldStopRoutine                  As Integer
  84.  
  85. Dim FileTR                          As String
  86. Dim FilePF                          As String
  87.  
  88. Dim chanFileTR                      As Integer
  89. Dim chanFilePF                      As Integer
  90.  
  91. Dim FileLNG                         As String
  92.  
  93. Dim FileHND                         As String
  94.  
  95. Dim FileLOG                         As String
  96.  
  97. Dim IDArray(0 To ID_ITEMS)          As Integer
  98.  
  99. Dim Language                        As Integer
  100. Dim AutoLog                         As Integer
  101. Dim WaitingTimeForReaction          As Integer
  102. Dim DefaultButton                   As Integer
  103. Dim DisplayOnline                   As Integer
  104. Dim TraceProfile                    As Integer
  105.  
  106. Dim TotalSameHandle                 As Long
  107. Dim LastHandle                      As Integer
  108. Dim ChanHandle                      As Integer
  109. Dim OldChanHandle                   As Integer
  110.  
  111. Dim tagERRORHANDLER                 As tagERRORHANDLERtype
  112. Dim tagTRACER                       As tagTRACERtype
  113. Dim tagPROFILER                     As tagPROFILERtype
  114.  
  115. Sub mcClearID()
  116.    #If Win16 Then
  117.       Call cClearID(IDArray(0))
  118.    #Else
  119.       Call cClearID(IDArray)
  120.    #End If
  121. End Sub
  122.  
  123. Function mcGetID(nPos As Integer)
  124.    #If Win16 Then
  125.       mcGetID = cGetID(IDArray(0), nPos)
  126.    #Else
  127.       mcGetID = cGetID(IDArray, nPos)
  128.    #End If
  129. End Function
  130.  
  131. Function mcGetLanguageID(LanguageID As Integer) As String
  132.  
  133.    Dim RetLanguage      As String
  134.  
  135.    Select Case LanguageID
  136.       Case VB_LNG_FRENCH
  137.          RetLanguage = "VFR"
  138.       Case VB_LNG_DUTCH
  139.          RetLanguage = "VNL"
  140.       Case VB_LNG_GERMAN
  141.          RetLanguage = "VDE"
  142.       Case VB_LNG_ENGLISH
  143.          RetLanguage = "VUK"
  144.       Case VB_LNG_ITALIAN
  145.          RetLanguage = "VIT"
  146.       Case VB_LNG_SPANISH
  147.          RetLanguage = "VSP"
  148.       Case VB_LNG_CATALAN
  149.          RetLanguage = "VCA"
  150.       Case VB_LNG_POLISH
  151.          RetLanguage = "VPO"
  152.       Case Else
  153.          RetLanguage = "VUK"
  154.    End Select
  155.    
  156.    If (LanguageID > 0) Then
  157.       Language = LanguageID
  158.    Else
  159.       Language = VB_LNG_ENGLISH
  160.    End If
  161.  
  162.    mcGetLanguageID = RetLanguage
  163.  
  164. End Function
  165.  
  166. Function mcIDErrorHandler(nErr As Integer) As Integer
  167.  
  168.    ' check if this a correct Error passed
  169.    If (nErr = 0) Then
  170.       'if no, resume next
  171.       mcIDErrorHandler = True
  172.       Exit Function
  173.    End If
  174.  
  175.    Dim RoutineCount     As Integer
  176.    Dim RoutineNumber    As Integer
  177.    Dim RoutineStack     As String
  178.    Dim TotalRoutines    As Integer
  179.    Dim BlankLines       As Integer
  180.    Dim Chan             As Integer
  181.    Dim StopExit         As Integer
  182.    Dim TimeOut          As Long
  183.    Dim ButtonsConfig    As Integer
  184.    Dim ErrorTitle       As String
  185.  
  186.    '  some initializations
  187.    RoutineStack = ""
  188.    TotalRoutines = 0
  189.    BlankLines = 0
  190.    StopExit = False
  191.    ButtonsConfig = 0
  192.    ErrorTitle = ""
  193.    RoutineStack = RoutineStack + mcReadText("0", "")
  194.    
  195.    ' find the next valid unused file number.
  196.    Chan = FreeFile
  197.  
  198.    ' open the file with the definition of each routines (file must be in the WINDOWS directory)
  199.    Close #Chan
  200.    Open FileHND For Random Shared As #Chan Len = Len(tagERRORHANDLER)
  201.  
  202.    ' get the stack of the routines
  203.    For RoutineCount = 0 To ID_ITEMS
  204.       ' get the number of the routine
  205.       RoutineNumber = mcGetID(RoutineCount)
  206.       ' if there a valid routine number
  207.       If (RoutineNumber > 0) Then
  208.          ' yes, read the definition of the routine
  209.          Get #Chan, RoutineNumber, tagERRORHANDLER
  210.          ' form the stack of the routines founden to display
  211.          RoutineStack = RoutineStack + Left$(tagERRORHANDLER.ModuleName + Space$(12), 14) + Chr$(9) + tagERRORHANDLER.RoutineHandle + Chr$(9) + Trim$(tagERRORHANDLER.RoutineName) + Chr$(13)
  212.          ' count the routines to display
  213.          TotalRoutines = TotalRoutines + 1
  214.       Else
  215.          ' no, exit from reading the stack
  216.          Exit For
  217.       End If
  218.    Next R